import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from "unplugin-vue-components/resolvers"; // 按需导入ep
import { createSvgIconsPlugin } from "vite-plugin-svg-icons"; // 支持svg
import { resolve } from "path";
// https://vitejs.dev/config/
export default defineConfig({
  base: "./",
  root: process.cwd(), // 绝对路径
  plugins: [
    vue(),
    vueJsx(),
    AutoImport({
      imports: ['vue', 'vue-router', 'vue-i18n'],//根据情况自己配置  文档https://github.com/unplugin/unplugin-auto-import
      // 可以选择auto-import.d.ts生成的位置，使用ts建议设置为'src/auto-import.d.ts'
      dts: 'src/auto-import.d.ts',
      resolvers: [
        ElementPlusResolver()
      ]//elm按需加载
    }),
    Components({ //引入组件自动按需引入，不再需要import  文档：https://github.com/unplugin/unplugin-vue-components#readme
      dts: true,//生成components.d.ts全局声明，如果安装了ts默认为true
      dirs: ["src/components"],//默认就是这个路径，可以自行修改
      resolvers: [ElementPlusResolver()], // 自定义组件
     }),
     // 支持svg
    createSvgIconsPlugin({
      iconDirs: [resolve(process.cwd(), "src/icons/svg")], // 要缓存的图标文件夹
       symbolId: 'icon-[name]',// 执行 icon name 的格式
    }),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  css: {
    preprocessorOptions: {
      // 引入全局scss
      scss: {
        additionalData: `@import "./src/styles/base.scss";`,
      },
    },
  },
  server: {//服务器配置:https://vitejs.dev/config/server-options.html#server-hmr
    port: 8081,
    host: "0.0.0.0",
    open: false,
    // 热更新
    hmr: {
      overlay: false,
    },
    proxy: {
      // 本地后端代理
      "/api": {
        //要访问的跨域的域名
        // target: "http://localhost:8888",
        target: "http://lushixin.top:8888/",
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, ""),
      },
     
    },
  },
  // 打包输出
  build: {
    sourcemap: false,
    // 消除打包大小超过500kb警告
    chunkSizeWarningLimit: 4000,
    rollupOptions: {
      input: {
        index: resolve("index.html"),
      },
      // 静态资源分类打包
      output: {
        chunkFileNames: "static/js/[name]-[hash].js",
        entryFileNames: "static/js/[name]-[hash].js",
        assetFileNames: "static/[ext]/[name]-[hash].[ext]",
      },
    },
  },
})
